'''
Trabalho 1

Participantes:
Fernanda Brandao Silva, 060727
Eliezer de Souza da Silva, 124065
'''

import sys
from struct import unpack
#o programa processa um arquivo PNG da entrada padrao

stdin = sys.stdin
signature = stdin.read(8)  # assinatura de 8 bytes do PNG
chunk_len = stdin.read(4)  # tamanho do chunk
chunk_type = stdin.read(4) # tipo do chunk

if( chunk_type != 'IHDR'): 
	sys.stderr.write("arquivo nao eh PNG\n")
	
# a ordem dos bytes no inteiro deve ser invertida para que a ordem de bytes (Network Byte Order) do inteiro no PNG
# seja mantida de acordo com a endianness do inteiro na arquitetura do sistema que estamos usando (Intel ou ARM: little endian)
# ver http://www.w3.org/TR/2003/REC-PNG-20031110/#7Integers-and-byte-order	
chunk_len=unpack('I',chunk_len[::-1]) # metodo de conversao de string de bytes para int

if( chunk_len > 8): 
	width=stdin.read(4)   # largura da imagem
	height=stdin.read(4)  # altura da imagem
	width=unpack('I',width[::-1])[0]
	height=unpack('I',height[::-1])[0]
	sys.stdout.write(str(height)+" "+str(width)+"\n")
else:
	sys.stderr.write("Arquivo corrompido. Erro no header do arquivo.\n")
